home *** CD-ROM | disk | FTP | other *** search
/ MacFormat España 15 / macformat_15.iso / C de cerca / Codewarrior Lite / MacOS Support / Headers / ANSI Headers / ptrdynarray < prev    next >
Text File  |  1995-12-29  |  4KB  |  122 lines

  1. // ptrdynarray standard header
  2. #ifndef _PTRDYNARRAY_
  3. #define _PTRDYNARRAY_
  4. #include <dynarray>
  5.  
  6. #if __MWERKS__
  7. #pragma options align=mac68k
  8.  
  9. #if __CFM68K__ && __USING_IMPORTED_ANSI__
  10. #pragma import on
  11. #endif
  12. #endif
  13.  
  14.   // template class ptrdynarray
  15. template<class _T> class ptrdynarray
  16.  : public dynarray<void *> {
  17. public:
  18.  ptrdynarray()
  19.   : dynarray<void *>() {}
  20.  ptrdynarray(size_t _N, capacity _C)
  21.   : dynarray<void *>(_N, _C) {}
  22.  ptrdynarray(const ptrdynarray<_T>& _X)
  23.   : dynarray<void *>(_X) {}
  24.  ptrdynarray(_T *_X, size_t _N = 1)
  25.   : dynarray<void *>((void *)_X, _N) {}
  26.  ptrdynarray(_T **_S, size_t _N = 1)
  27.   : dynarray<void *>((void **)_S, _N) {}
  28.  ptrdynarray<_T>& operator=(const ptrdynarray<_T>& _R)
  29.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  30.    operator=((const dynarray<void *>&)_R)); }
  31.  ptrdynarray<_T>& operator+=(const ptrdynarray<_T>& _R)
  32.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  33.    operator+=((const dynarray<void *>&)_R)); }
  34.  ptrdynarray<_T>& operator+=(_T *_R)
  35.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  36.    operator+=((void *)_R)); }
  37.  ptrdynarray<_T>& append(_T *_X, size_t _N = 1)
  38.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  39.    append((void *)_X, _N)); }
  40.  ptrdynarray<_T>& append(_T **_S, size_t _N = 1)
  41.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  42.    append((void **)_S, _N)); }
  43.  ptrdynarray<_T>& assign(_T *_X, size_t _N = 1)
  44.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  45.    assign((void *)_X, _N)); }
  46.  ptrdynarray<_T>& assign(_T **_S, size_t _N = 1)
  47.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  48.    assign((void **)_S, _N)); }
  49.  ptrdynarray<_T>& insert(size_t _P,
  50.   const ptrdynarray<_T>& _X)
  51.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  52.    insert(_P, (const dynarray<void *>&)_X)); }
  53.  ptrdynarray<_T>& insert(size_t _P, _T *_X, size_t _N = 1)
  54.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  55.    insert(_P, (void *)_X, _N)); }
  56.  ptrdynarray<_T>& insert(size_t _P, _T **_S, size_t _N = 1)
  57.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  58.    insert(_P, (void **)_S, _N)); }
  59.  ptrdynarray<_T>& remove(size_t _P = 0, size_t _N = NPOS)
  60.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  61.    remove(_P, _N)); }
  62.  ptrdynarray<_T>& sub_array(ptrdynarray<_T>& _X, size_t _P,
  63.   size_t _N = NPOS)
  64.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  65.    sub_array(_X, _P, _N)); }
  66.  void swap(ptrdynarray<_T>& _X)
  67.   {dynarray<void *>::swap(_X); }
  68.  _T* get_at(size_t _P) const
  69.   {return ((_T *)dynarray<void *>::get_at(_P)); }
  70.  void put_at(size_t _P, _T *_X)
  71.   {dynarray<void *>::put_at(_P, (void *)_X); }
  72.  _T *& operator[](size_t _P)
  73.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  74.  _T *const& operator[](size_t _P) const
  75.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  76.  _T **base()
  77.   {return ((_T **)dynarray<void *>::base()); }
  78.  const _T **base() const
  79.   {return ((const _T **)dynarray<void *>::base()); }
  80.  size_t length() const
  81.   {return (dynarray<void *>::length()); }
  82.  void resize(size_t _N)
  83.   {dynarray<void *>::resize(_N); }
  84.  void resize(size_t _N, _T *_X)
  85.   {dynarray<void *>::resize(_N, (void *)_X); }
  86.  size_t reserve() const
  87.   {return (dynarray<void *>::reserve()); }
  88.  void reserve(size_t _N)
  89.   {dynarray<void *>::reserve(_N); }
  90.  };
  91.   // template operators
  92. template<class _T> ptrdynarray<_T>
  93.  operator+(const ptrdynarray<_T>& _L,
  94.   const ptrdynarray<_T>& _R)
  95.  {return (ptrdynarray<_T>(_L) += _R); }
  96. template<class _T> ptrdynarray<_T>
  97.  operator+(const ptrdynarray<_T>& _L, _T *_R)
  98.  {return (ptrdynarray<_T>(_L) += _R); }
  99. template<class _T> ptrdynarray<_T>
  100.  operator+(_T *_L, const ptrdynarray<_T>& _R)
  101.  {return (ptrdynarray<_T>(_L) += _R); }
  102.  
  103. #if __MWERKS__
  104. #if __CFM68K__ && __USING_IMPORTED_ANSI__
  105. #pragma import reset
  106. #endif
  107.  
  108. #pragma options align=reset
  109. #endif
  110.  
  111. #endif
  112.  
  113. /*
  114.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  115.  * Consult your license regarding permissions and restrictions.
  116.  */
  117.  
  118. /* Change log:
  119.  *94Oct03 Version received from PlumHall
  120.  *94Oct07 Inserted MW changes.
  121.  */
  122.